In computer engineering, computer code is typically created as source code and then translated to a form that is readable by a target architecture, such as a computer or virtual machine. This translated code can be referred to as machine code. Machine code can be translated in its entirety prior to code execution using a technique called static binary translation. Alternatively, portions of machine code can be translated in blocks and even during runtime using dynamic binary translation. For example, a dynamic binary translator, Just In Time (JIT) compiler or virtual machine can perform dynamic translation and optimization of machine code or bytecode (a type of machine code intended to be recompiled by a JIT), which can be cached for later use. The resulting machine code can target the same architecture as the original code or a different architecture.